package com.example.service.impl;

import com.example.Utils.jwtUtils;
import com.example.exception.ServiceException;
import com.example.mapper.userMapp;
import com.example.pojo.Result;
import com.example.pojo.userPojo;
import com.example.service.userService;
import io.jsonwebtoken.Claims;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.awt.desktop.UserSessionListener;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * ClassName:userImpl
 * Description:
 *
 * @Author 赵永峰
 * @Create 2024/5/9 7:46
 * @Version 1.0
 */

@Service//注解：表示把这个注入到了ben中。
@Slf4j//可以输出注解
public class userImpl implements userService {
    @Autowired
    private userMapp userMapp;
    @Override
    public userPojo userLogin(userPojo user) {
        //根据用户名查询用户信息
        userPojo dbuser = userMapp.selectByName(user.getUserName());
        if (dbuser == null){
            //判断是否有用户，如果没有，抛出一个自定义异常说明登录不对。
            throw new ServiceException(500,"用户名或密码错误");
        };
        if (!user.getPassword().equals(dbuser.getPassword())){
            //判断是否密码正确，如果错误，抛出异常说明登录不对。
            throw new ServiceException(500,"用户名或密码错误");
        }
        Map<String, Object> Claims = new HashMap<>();
        Claims.put("id",user.getId());
        Claims.put("name",user.getUserName());
        String jwt = jwtUtils.generateJwt(Claims);
        userPojo dbjwt =new userPojo();
        dbjwt.setUserName(user.getUserName());
        dbjwt.setJwt(jwt);
        dbjwt.setId(dbuser.getId());
        return dbjwt;
    }
    //根据用户的输入，查询用户的权限
    public int fieldByOne(String field, String user){
         int userP=0;
        if (user=="" || user=="null"){
            userP=0;

        }else {
            userP= userMapp.fieldByOne(field,user);
        }
        return userP;
    }
    //根据前端发来的请求字段，查询在固定的用户下，固定的权限内容。
    public userPojo problemUsePurview(Map<String, Object> parameters){
        String userName = (String) parameters.get("userName");
        String filed = (String) parameters.get("filed");
        userPojo userPojo=userMapp.problemUsePurview(userName,filed);
        return userPojo;
    }
    //前端发来请求，按照用户的工号，查询用户名称和用户对应的页面权限
    public userPojo useQueryPower(Map<String, Object> parameters){
        String queryFiledName = (String) parameters.get("queryFiledName");
        String userId = (String) parameters.get("userId");
        userPojo userPojo=userMapp.useQueryPower(queryFiledName,userId);
        return userPojo;
    }
    //查询所有的用户信息
    public List<userPojo> queryAllUser(){
        List<userPojo> userPojoList=userMapp.queryAllUser();
        return userPojoList;
    }
    //修改一行数据
    public void editOne(userPojo userPojo){
        userMapp.editOne(userPojo);
    }
    //插入一整行
    public void insertOne(userPojo userPojo){
        userMapp.insertOne(userPojo);
    }
    //根据id，修改某一个字段的值
    public void editOneField(Map<String, Object> map){
        Integer id=(Integer) map.get("id");
        String fieldName=(String) map.get("fieldName");
        String fieldVal=(String) map.get("fieldVal");
        userMapp.editOneField(id,fieldName,fieldVal);
    }
}
